#include "bib_Log.h"
#include "bib_Socket.h"
#include "bib_Linea_Comando.h"

char nivelLog;

struct		EST_CHS disco;
uint32_t	cantSectoresDisco;

int main(void){

	int sock;
	char flagFin;
	char linea[TAM_MAX_LINEA];
	char *comandoYParametros[CANT_MAX_PARAMETROS + 1];

	nivelLog = DEBUG;
	flagFin = 1;

	imprimirLog(DEBUG, "Consola iniciada", "");

	/*sock = 1;
	disco.cilindro = 1024;
	disco.sector = 1024;*/
	if (conectarSocketUnix(&sock))
		return FIN_ERROR;

	if (obtenerTamanioDisco(sock))
		return FIN_ERROR;

	while(flagFin){
		if (!obtenerComando(linea, comandoYParametros)){

			if (!strcmp(comandoYParametros[0],CMD_INFO)){
				if (info(sock, comandoYParametros) == FIN_ERROR)
					break;
			}

			else if (!strcmp(comandoYParametros[0], CMD_CLEAN)){
				if (clean(sock, comandoYParametros) == FIN_ERROR)
					break;
			}

			else if (!strcmp(comandoYParametros[0], CMD_TRACE)){
				if (trace(sock, comandoYParametros) == FIN_ERROR)
					break;
			}

			else if (!strcmp(comandoYParametros[0], CMD_SALIR)){
				if (salir(sock, comandoYParametros, &flagFin) == FIN_ERROR)
					break;
			}

			else
				imprimirLog(WARNING, "Elija alguno de los siguientes comandos: info, clean, trace o salir. Comando invalido:", comandoYParametros[0]);
		}
	}

	return FIN_OK;
}
